package com.example.klinedemo.luPing

import android.media.MediaCodec
import android.media.MediaCodecInfo
import android.media.MediaFormat
import android.media.projection.MediaProjection

class  H264EnCode (
    // 数据源
    val mediaProjection: MediaProjection,
){
    val mediaCodec: MediaCodec by lazy {
        MediaCodec.createEncoderByType("video/avc")
    }

    init {
        // 解码不需要宽高
        // 编码要提供宽高
        val mediaConfig = MediaFormat.createVideoFormat(MediaFormat.MIMETYPE_VIDEO_AVC, 1280, 720)
        mediaConfig.setInteger(MediaFormat.KEY_FRAME_RATE,30) // 代表帧率
        mediaConfig.setInteger(MediaFormat.KEY_I_FRAME_INTERVAL,30) // 代表关键帧间隔
        mediaConfig.setInteger(MediaFormat.KEY_BIT_RATE,1280*720) // 代表比特率
        // 数据来源
        mediaConfig.setInteger(MediaFormat.KEY_COLOR_FORMAT,MediaCodecInfo.CodecCapabilities.COLOR_FormatSurface)
        // 后面是编码标志位
        mediaCodec.configure(mediaConfig,null,null,MediaCodec.CONFIGURE_FLAG_ENCODE)

        val surface = mediaCodec.createInputSurface()
        mediaProjection.createVirtualDisplay("fqr_luping", 1280, 720, 2,2,surface,null,null)


    }

}
